λ stack setup
プロジェクトで指定されたバージョンのコンパイラや基本パッケージをインストール
$ stack buildが賄ってくれるので不要になったらしい ref GPT-4.icon
Stack における環境セットアップ用のコマンドです。
特に、プロジェクトをビルドするために必要な GHC をインストールおよび設定します。
---
stack setupの役割
1. 適切なGHCのインストール:
プロジェクトに適したGHCバージョンを確認します。
stack.yaml で指定された resolver(Stackage Snapshot) に対応するGHCをインストールします。
2. 環境のセットアップ:
GHCのインストールだけでなく、必要に応じて他のツールやライブラリも準備します。
3. グローバルGHCとは独立した環境を構築:
他のHaskellツールチェインや既存のGHC環境に影響を与えず、Stack独自の環境を構築します。
GHCは、Stack専用のディレクトリ(通常、~/.stack/programs/)にインストールされます。
---
使い方
code:bash
一般的な使い方
GHCをインストールまたは確認:
code:bash
stack setup
必要なGHCバージョンがインストールされていない場合、Stackが自動でインストールします。
特定のGHCバージョンを明示的に指定してセットアップ:
code:bash
stack setup --ghc-version 9.2.5
GHCのバージョンを指定してセットアップします。
---
オプション
1. インストール先の変更:
code:bash
stack setup --programs-path=/path/to/directory
GHCをインストールするディレクトリを指定します(デフォルトは ~/.stack/programs)。
2. 既存のGHCを利用:
code:bash
stack setup --reinstall
現在の環境にインストール済みのGHCが壊れている場合に再インストールします。
3. インストールのみを試行:
code:bash
stack setup --install-ghc
必要なGHCが見つからない場合にインストールを強制します。
4. インストールをスキップ:
code:bash
stack setup --no-install-ghc
すでに適切なGHCがインストールされている場合に利用します。インストールを試みずにセットアップを進めます。
---
関連するファイルやディレクトリ
stack.yaml:
使用する resolver (Stackage Snapshot)が記載されています。これに基づき、適切なGHCバージョンが選択されます。
~/.stack/programs/:
StackがインストールしたGHCが保存されるディレクトリです。
例えば、Linuxなら ~/.stack/programs/x86_64-linux/ghc-9.2.5/ のようになります。
---
よくある質問
1. Q: なぜ stack setup が必要なのか?
Stackは他のプロジェクトと競合しない環境を提供するため、GHCのバージョン管理を自動化します。
GHCのインストールをシステムに依存させないことで、一貫性とポータビリティが向上します。
2. Q: stack setup を実行してもGHCがインストールされない場合は?
stack.yaml の resolver が正しいか確認してください。
ネットワーク環境やインストール先のディスク容量もチェックしてください。
3. Q: 既にシステムにGHCがある場合もインストールされるのか?
Stackは独自の環境を使用するため、システムのGHCとは別にインストールします。
---
関連コマンド
stack exec:
stack setup によってセットアップされた環境内でコマンドを実行できます。
stack ghc:
セットアップされた環境内のGHCを直接呼び出します。